/* 查找二叉树中 data 域等于 key 的结点是否存在，若存在，将q指向它，否则q为空 */
#include <iostream>
#include "BiTreefun.h"
using namespace std;

// 查找特定值
void fun(BTNode *p, BTNode *&q, int key)
{
  // 如果二叉树不为空
  if (p != NULL)
  {
    // 根结点是否符合根结点不符合
    if (p->data == key)
      q = p;
    
    // 
    else
    {
      // 在左子树中查找
      fun(p->lchild, q, key);
      
      // 在右子树中查找
      fun(p->rchild, q, key);
    }
  }
}

int main()
{
  // 创建二叉树
  BTNode *T = create_bitree();
  
  // 指针
  BTNode *q = NULL;
  
  // 查找目标
  char key = '6';
  
  // 查找特定结点
  fun(T, q, key);
  
  // 如果查找成功
  if (q != NULL)
    cout << "查找成功:" << q->data;
  
  // 如果查找失败
  else
    cout << "查找失败！" << endl;
}